package PackageVoiture;




import java.util.ArrayList;

import junit.framework.Assert;
import junit.framework.TestCase;
import junit.framework.TestSuite;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

///FDqsfqsfsqcfqd

/**
 * The test class Setup.
 *
 * @author  (your name)
 * @version (a version number or a date)
 */
public class Setup extends TestCase
{
    private PackageVoiture.Voiture voiture1,voiture2,voiture3;
    private PackageVoiture.Proprietaire propriet1;
	private Proprietaire propriet2;

    /**
     * Default constructor for test class Setup
     */
    public Setup()
    {
    }
    public Setup(String s){ super(s); }

    /**
     * Sets up the test fixture.
     *
     * Called before every test case method.
     */
    @Before
    public void setUp()
    {
        voiture1 = new PackageVoiture.Voiture();
        propriet1 = new PackageVoiture.Proprietaire("Mark", "Chirak", 67);
        voiture1 = new PackageVoiture.Voiture();
        voiture2 = new PackageVoiture.Voiture();
        voiture3 = new PackageVoiture.Voiture();
       
    }

    /**
     * Tears down the test fixture.
     *
     * Called after every test case method.
     */
    @After
    public void tearDown()
    {
    }
    @Test
    public void testBidirectionnelle()
    {
       
        propriet1.acheterVoiture(voiture1);
        propriet1.acheterVoiture(voiture2);
        ArrayList <Voiture> attendu= new  ArrayList <Voiture> ();
        attendu.add(voiture1);
        attendu.add(voiture2);
        propriet1.acheterVoiture(voiture3);
        propriet1.conduire(0,20);
        propriet1.conduire(2,3);
        propriet1.conduire(1,6);
        propriet1.conduire(0,6);
        propriet1.removeVoiture(voiture3);
        //propriet1.conduire(5,2);
        Assert.assertEquals(propriet1.getVoitures(),attendu);
        
    }
    @Test
    public void testChangementProprioTST01()
    {
    	System.out.println("mon propio est:"+voiture1.getProprio());
    	voiture1.changerDeProprio(new Proprietaire("jean","Moulin",70));
    	System.out.println("mon propio est:"+voiture1.getProprio());
    	Assert.assertEquals(voiture1.getProprio(),"jean");
    }
    
    @Test
    public void testRemplissageCarburantTST01()
    {
    	Assert.assertEquals(voiture1.Remplir(3),false);
    	
    }
    
    public void testAcheterVoitureTST01()
    {
    	
    	propriet1.acheterVoiture(voiture1);
    	Assert.assertEquals(propriet1.getVoitures().get(0),voiture1);
    }
    public void testAcheterVoitureTST02()
    {
    	
    	propriet1.acheterVoiture(voiture1);
    	Assert.assertEquals(voiture1.getProprio(),propriet1.getNom());
    }
    
    public void testPanneTST01()
    {
    	voiture1.tomberEnPanne();
    	propriet1.acheterVoiture(voiture1);
    	Assert.assertEquals(propriet1.conduire(0, 3),"enPanne");
    }
    
    public void testReparationTST01()
    {
    	voiture1.tomberEnPanne();
    	propriet1.acheterVoiture(voiture1);
    	Assert.assertEquals(propriet1.conduire(0,4),"enPanne");
    	propriet1.reparerVoiture(0);
    	Assert.assertEquals(propriet1.conduire(0, 5),"bon");
    }
    public void testVendreVoitureTST01()
    {
    	propriet2 = new PackageVoiture.Proprietaire("jean", "Dupont", 67);
    	propriet1.acheterVoiture(voiture1);
    	propriet1.vendreVoiture(propriet2,voiture1);
    	Assert.assertEquals(propriet2.conduire(0, 3),"bon");
    }
    public void testVendreVoitureTST02()
    {
    	propriet2 = new PackageVoiture.Proprietaire("jean", "Dupont", 67);
    	propriet1.acheterVoiture(voiture1);
    	propriet1.vendreVoiture(propriet2,voiture1);
    	Assert.assertEquals(propriet1.conduire(0, 3),"inexistante");
    }
    
    @Test
    public static TestSuite suite() {
    	TestSuite suite= new TestSuite();
    	
    	suite.addTest(new Setup("testRemplissageCarburantTST01"));
    	suite.addTest(new Setup("testReparationTST01"));
    	suite.addTest(new Setup("testAcheterVoitureTST01"));
    	suite.addTest(new Setup("testAcheterVoitureTST02"));
    	suite.addTest(new Setup("testVendreVoitureTST01"));
    	suite.addTest(new Setup("testVendreVoitureTST02"));
    	suite.addTest(new Setup("testBidirectionnelle"));
    	suite.addTest(new Setup("testChangementProprioTST01"));
    	//suite.addTest(new Setup("dernierTest"));
        return suite;
    }
    
    @Test
    public void dernierTest()
    {
        propriet1.acheterVoiture(voiture1);
        propriet1.conduire(0,20);
    }
    
}

